package com.sugon.service.impl;

import cn.hutool.core.date.DateUtil;
import cn.hutool.core.lang.Assert;
import cn.hutool.core.util.RandomUtil;
import com.sugon.dao.ToolsCheckTicketDao;
import com.sugon.dao.ToolsCheckTicketItemDao;
import com.sugon.entity.ToolsCheckTicketEntity;
import com.sugon.entity.ToolsCheckTicketItemEntity;
import com.sugon.service.ToolsCheckTicketItemService;
import com.sugon.utils.ShiroUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;
import java.util.Map;

/**
 * 工装周期性检测工单明细Service实现类
 *
 * @author sugon
 * @date 2021-09-27 10:47:49
 */
@Service("toolsCheckTicketItemService")
public class ToolsCheckTicketItemServiceImpl implements ToolsCheckTicketItemService {
    @Autowired
    private ToolsCheckTicketItemDao toolsCheckTicketItemDao;
    @Autowired
    private ToolsCheckTicketDao toolsCheckTicketDao;

    @Override
    public ToolsCheckTicketItemEntity queryObject(String id) {
        return toolsCheckTicketItemDao.queryObject(id);
    }

    @Override
    public List<ToolsCheckTicketItemEntity> queryList(Map<String, Object> map) {
        return toolsCheckTicketItemDao.queryList(map);
    }

    @Override
    public int queryTotal(Map<String, Object> map) {
        return toolsCheckTicketItemDao.queryTotal(map);
    }

    @Override
    public int save(ToolsCheckTicketItemEntity toolsCheckTicketItem) {
        toolsCheckTicketItem.setId(RandomUtil.randomString(32));
        toolsCheckTicketItem.setGmtCreate(DateUtil.date());
        return toolsCheckTicketItemDao.save(toolsCheckTicketItem);
    }

    @Override
    public int update(ToolsCheckTicketItemEntity toolsCheckTicketItem) {
        toolsCheckTicketItem.setGmtModified(DateUtil.date());
        return toolsCheckTicketItemDao.update(toolsCheckTicketItem);
    }

    @Override
    public boolean addInvalidHandleRecord(ToolsCheckTicketItemEntity toolsCheckTicketItem) {
        // 更新处置信息
        toolsCheckTicketItem.setChangeDate(DateUtil.date());
        toolsCheckTicketItem.setConfirmor(ShiroUtils.getUserId());
        boolean updateFlag = update(toolsCheckTicketItem) > 0;
        if (updateFlag) {
            ToolsCheckTicketEntity checkTicket = toolsCheckTicketItemDao.queryTicket(toolsCheckTicketItem.getId());
            Assert.notNull(checkTicket);
            int unTreatedNum = toolsCheckTicketItemDao.countUnTreatedItem(toolsCheckTicketItem.getTicketId());
            if (unTreatedNum > 0) {
                // 如果状态不一致则更新
                if ("0".equals(checkTicket.getIsTreated())) {
                    checkTicket.setIsTreated("1");
                    toolsCheckTicketDao.update(checkTicket);
                }
            } else {
                if ("1".equals(checkTicket.getIsTreated())) {
                    checkTicket.setIsTreated("0");
                    toolsCheckTicketDao.update(checkTicket);
                }
            }
        }
        return updateFlag;
    }

    @Override
    public int delete(String id) {
        return toolsCheckTicketItemDao.delete(id);
    }

    @Override
    public int deleteBatch(String[] ids) {
        return toolsCheckTicketItemDao.deleteBatch(ids);
    }
}
